package com.freeter.modules.controller;


import com.freeter.modules.gjs.entity.MstrUom;
import com.freeter.modules.gjs.service.MstrUomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/mstr-uom")
@CrossOrigin(origins = "*")
public class MstrUomController {

    @Autowired
    private MstrUomService mstrUomService;

    @GetMapping
    public ResponseEntity<List<MstrUom>> getAllUoms() {
        List<MstrUom> uoms = mstrUomService.getAllUoms();
        return ResponseEntity.ok(uoms);
    }

    @GetMapping("/{id}")
    public ResponseEntity<MstrUom> getUomById(@PathVariable Long id) {
        MstrUom uom = mstrUomService.getUomById(id);
        if (uom != null) {
            return ResponseEntity.ok(uom);
        }
        return ResponseEntity.notFound().build();
    }

    @GetMapping("/code/{uomCode}")
    public ResponseEntity<MstrUom> getUomByCode(@PathVariable String uomCode) {
        MstrUom uom = mstrUomService.getUomByCode(uomCode);
        if (uom != null) {
            return ResponseEntity.ok(uom);
        }
        return ResponseEntity.notFound().build();
    }

    @PostMapping
    public ResponseEntity<MstrUom> createUom(@RequestBody MstrUom uom) {
        MstrUom createdUom = mstrUomService.createUom(uom);
        return ResponseEntity.ok(createdUom);
    }

    @PutMapping("/{id}")
    public ResponseEntity<MstrUom> updateUom(@PathVariable Long id, @RequestBody MstrUom uom) {
        try {
            MstrUom updatedUom = mstrUomService.updateUom(id, uom);
            return ResponseEntity.ok(updatedUom);
        } catch (RuntimeException e) {
            return ResponseEntity.notFound().build();
        }
    }

    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteUom(@PathVariable Long id) {
        mstrUomService.deleteUom(id);
        return ResponseEntity.ok().build();
    }

    @DeleteMapping("/code/{uomCode}")
    public ResponseEntity<Void> deleteUomByCode(@PathVariable String uomCode) {
        mstrUomService.deleteUomByCode(uomCode);
        return ResponseEntity.ok().build();
    }

    @GetMapping("/status/{status}")
    public ResponseEntity<List<MstrUom>> getUomsByStatus(@PathVariable String status) {
        List<MstrUom> uoms = mstrUomService.getUomsByStatus(status);
        return ResponseEntity.ok(uoms);
    }
}